import logging
from Basic.PATH import *

""" 日志处理 """

def LOG(filename,
        all_level="DEBUG",
        stream_level="INFO",
        file_level="INFO",
        all_format="%(asctime)s %(levelname)-6s line:%(lineno)-6d %(filename)-30s %(message)s",
        date_format="%Y-%m-%d %H:%M:%S",
        log_path=None):

    if log_path == None:
        log_path = log_path
    if not os.path.exists(log_path):
        os.makedirs(log_path)
        print('创建日志保存路径:%s' % log_path)

    logfile_path = os.path.join(log_path, filename + '.log')
    if not os.path.exists(logfile_path):
        open(logfile_path, 'w')  # 创建测试日志文件

    logger = logging.getLogger(filename)  # log收集器
    logger.setLevel(all_level)  # 定义收集器的信息级别
    log_format = logging.Formatter(
        fmt=all_format,
        datefmt=date_format)  # 定义日志的格式
    # 控制台输出日志
    ch = logging.StreamHandler()  # 控制台输出句柄
    ch.setFormatter(log_format)  # 控制台输出的信息格式
    ch.setLevel(stream_level)  # 控制台输出的信息级别

    # 文件输出日志
    fh = logging.FileHandler(filename=logfile_path, mode='a', encoding='utf-8')  # mode='a' 追加写入模式
    fh.setFormatter(log_format)  # 文件输出的信息格式
    fh.setLevel(file_level)  # 文件输出的信息级别

    # 加载输出句柄
    logger.addHandler(ch)  # 把流媒体添加到控制台输出句柄内
    logger.addHandler(fh)

    return logger

'''
# 输出log
def out_log( my_logger=None):
    if my_logger:
        log_cap = io.StringIO()
        ch = logging.StreamHandler(log_cap)
        ch.setLevel(logging.DEBUG)
        formatter = logging.Formatter(
            fmt='"%(asctime)s %(levelname)s line:%(lineno)d %(filename)-25s %(message)s"',
            datefmt='%Y-%m-%d %H:%M:%S')
        ch.setFormatter(formatter)
        my_logger.addHandler(ch)
        ouput_result = log_cap.getvalue() + '\n' + log_cap.getvalue()  # 这是我自定义的新的
        return ouput_result
'''

daytime = time.strftime('%Y-%m-%d', time.localtime(time.time()))
log = LOG(filename=daytime, log_path=log_path)

if __name__ == '__main__':
    log.info('123')
